package com.lovi.collection_.list_;

import java.util.ArrayList;
import java.util.List;

/*
使用List的实现类添加三本图书，并遍历，打印如下效果
名称：xx 价格： xx 作者： xx
名称：xx 价格： xx 作者： xx
名称：xx 价格： xx 作者： xx
要求
1)按价格排序，从低到高(使用冒泡法)
2） 要求使用ArrayList、LinkedList 和 Vector 三种集合实现
 */
public class Test01 {
    public static void main(String[] args) {
        ArrayList<Book> list = new ArrayList<>();
//        LinkedList<Book> list = new LinkedList<>();
//        Vector<Book> list = new Vector<>();
        list.add(new Book("a", 1, "a"));
        list.add(new Book("b", 7, "b"));
        list.add(new Book("c", 3, "c"));
        bubbleSort(list);
        System.out.println(list);


    }
    //冒泡排序
    public static void bubbleSort(List list){
        Book temp ;
        for (int i = 0; i < list.size(); i++) {
            for (int j = 0; j < list.size()-1-i; j++) {
                Book book1 = (Book) list.get(j);
                Book book2 = (Book) list.get(j+1);
                //根据价格从小到大排序
                if(book1.getPrice()>book2.getPrice()){
                    //这两个需要进行交换
//                    temp = book1;
//                    book1 = book2;
//                    book2 = temp;
                    /*
                    发现问题，我们book1和book2交换了，不会影响我们集合
                    他们两个是两个地址诶!所以要设置进去集合里才对
                    这才是交换
                     */
                    list.set(j,book2);
                    list.set(j+1,book1);
                }
            }
        }

    }
}
class Book {
    private String name;
    private double price;
    private String author;

    public Book(String name, double price, String author) {
        this.name = name;
        this.price = price;
        this.author = author;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }

    public String getAuthor() {
        return author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }

    @Override
    public String toString() {
        return "Book{" +
                "name='" + name + '\'' +
                ", price=" + price +
                ", author='" + author + '\'' +
                '}';
    }
}
